package br.com.vertigo.sgci.entity;

// Generated 15/10/2008 18:19:42 by Hibernate Tools 3.2.2.GA

import static javax.persistence.GenerationType.IDENTITY;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.validator.Email;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;

/**
 * Usuario generated by hbm2java
 */
@SuppressWarnings("serial")
@Entity
@Table(name = "usuario", catalog = "sgci_project")
public class Usuario implements java.io.Serializable {

	private Long idUsuario;
	private String login;
	private String senha;
	private String nome;
	private String email;
	private String perfil;
	private boolean ativo = true;
	private Set<Projeto> projetos = new HashSet<Projeto>(0);
	private Set<Rdv> rdvs = new HashSet<Rdv>(0);
	private Set<Voucher> vouchers = new HashSet<Voucher>(0);

	public Usuario() {
	}

	public Usuario(String login, String senha, String nome,String email, String perfil, boolean ativo) {
		this.login = login;
		this.senha = senha;
		this.nome = nome;
		this.email = email;
		this.perfil = perfil;
		this.ativo = ativo;
	}

	public Usuario(String login, String senha, String nome,String email, String perfil, boolean ativo,
			Set<Projeto> projetos, Set<Rdv> rdvs, Set<Voucher> vouchers) {
		this.login = login;
		this.senha = senha;
		this.nome = nome;
		this.email = email;
		this.perfil = perfil;
		this.ativo = ativo;
		this.projetos = projetos;
		this.rdvs = rdvs;
		this.vouchers = vouchers;
	}

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "ID_USUARIO", unique = true, nullable = false)
	public Long getIdUsuario() {
		return this.idUsuario;
	}

	public void setIdUsuario(Long idUsuario) {
		this.idUsuario = idUsuario;
	}

	@Column(name = "LOGIN", nullable = false, length = 45)
	@NotNull
	@Length(max = 45)
	public String getLogin() {
		return this.login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	@Column(name = "SENHA", nullable = false, length = 32)
	@NotNull
	@Length(max = 32)
	public String getSenha() {
		return this.senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}
	
	@Column(name = "NOME", nullable = false, length = 100)
	@NotNull
	@Length(max = 100)
	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	
	@Column(name = "EMAIL", nullable = false, length = 100)
	@NotNull
	@Email
	@Length(max = 100)
	public String getEmail() {
		return this.email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	@Column(name = "PERFIL", nullable = false, length = 45)
	@NotNull
	@Length(max = 45)
	public String getPerfil() {
		return this.perfil;
	}

	public void setPerfil(String perfil) {
		this.perfil = perfil;
	}
	
	@Column(name = "ATIVO", nullable = false)
	@NotNull
	public boolean isAtivo() {
		return this.ativo;
	}

	public void setAtivo(boolean ativo) {
		this.ativo = ativo;
	}


	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "usuario")
	public Set<Projeto> getProjetos() {
		return this.projetos;
	}

	public void setProjetos(Set<Projeto> projetos) {
		this.projetos = projetos;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "usuario")
	public Set<Rdv> getRdvs() {
		return this.rdvs;
	}

	public void setRdvs(Set<Rdv> rdvs) {
		this.rdvs = rdvs;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "usuario")
	public Set<Voucher> getVouchers() {
		return this.vouchers;
	}

	public void setVouchers(Set<Voucher> vouchers) {
		this.vouchers = vouchers;
	}
}
